package com.hyt.it.ogt.kq.service.gov.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.kq.service.gov.model.dto.PlaceAreaInfoDTO;
import com.hyt.it.ogt.kq.service.gov.model.dto.PlaceRoomInfoDTO;
import com.hyt.it.ogt.kq.service.gov.model.entity.TaskPlace;
import com.hyt.it.ogt.kq.service.gov.model.vo.TaskPlaceVO;
import com.hyt.it.ogt.kq.service.gov.model.xml.examsys.gce.RegisterInfoGceResult;

/**
 * <p>
 * 任务考点表 服务类
 * </p>
 *
 * @author huangyh
 * @since 2021-04-12
 */
public interface ITaskPlaceService extends IService<TaskPlace> {


    /**
     * 查询任务下的考点
     * @param taskId
     * @param districtId
     * @return
     */
    List<TaskPlace> getTaskPlace(String taskId,String districtId);

    /**
     * 获取注册考点信息(GCE)
     * @param taskCode 考试任务编号
     * @param code 考点编号
     * @return 注册考点信息
     */
    RegisterInfoGceResult getGceRegisterPlaceInfo(String taskCode, String code);

    /**
     * 根据考试任务编号获取考点考场信息
     * @param taskCode 考试任务编号
     * @param roomCode 考场编号
     * @return 考点考场信息DTO
     */
    PlaceRoomInfoDTO getPlaceRoomInfoByCode(String taskCode, String roomCode);

    /**
     * 通过考试任务id获取任务考点数据
     * @param taskId 考试任务id
     * @return 任务考点数据
     */
    List<TaskPlace> listByTaskId(String taskId);

    /**
     * 通过考试任务id获取任务考点数据
     * @param taskId 考试任务id
     * @return 任务考点数据
     */
    Map<String,TaskPlace> mapByTaskId(String taskId);

    /**
     * 获取任务下的1个考点，一般用于线上机考
     * @param taskId 考试任务id
     * @return 考点
     */
    TaskPlace getOneTaskPlace(String taskId);

    /**
     *
     *
     * @param taskId
     * @return
     */
    int countTaskCity(String taskId);

    /**
     * 获取考点区域信息信息DTO
     * @param placeId 考点id
     * @return 考点区域信息信息DTO
     */
    PlaceAreaInfoDTO getPlaceAreaInfo(String placeId);

    /**
     * 初始化虚拟考点，随机一个区域信息
     * @param taskId
     */
    void initVirtualTaskPlaceRandomDistrict(String taskId);

    /**
     * 获取自定义考点
     * @param taskId 考试任务id
     * @return 自定义考点
     */
    TaskPlace oneCustomPlace(String taskId);

    List<TaskPlaceVO> getTaskPlaceList(String taskId);

    TaskPlace getTaskByRoomId(String taskId, String roomId);
}
